<?php

$usuario = $sesion->getUsuario();
//echo '[';

$json = array();
if(is_numeric($_GET["desde"]) and is_numeric($_GET["cantidad"]))
{
	
	$_GET["desde"]--; //Para que funcione el limit

	if(is_numeric($_GET['carpeta']))
	{
		$sql="SELECT id_emisor,id_conversacion,mensaje,fecha FROM mensajes_privados
		WHERE id_receptor=".$usuario->getId()." AND id_carpeta = ".$_GET['carpeta']."
		ORDER BY fecha DESC
		LIMIT ".$_GET["desde"].",".$_GET["cantidad"];
		
		$sql_candidad_fotos="select count(*),nombre
		from mensajes_privados
		JOIN mensajes_privados_carpetas USING (id_usuario,id_carpeta)
		where id_usuario=".$usuario->getId()." and id_carpeta = ".$_GET['carpeta'];
		
		$res=mysql_query($sql_candidad_fotos);
		$fila=mysql_fetch_array($res,MYSQL_NUM);
		$cantidad_fotos = $fila[0];
		$carpeta = $fila[1];
	}
	elseif($_GET['carpeta']=="" or $_GET['carpeta']=="bandejaEntrada")
	{
		/*
		//Con esta consulta sacamos todas las conversaciones del usuario con la cantidad de mensajes.
		//Tambien se saca el nombre y el id del usuario emisor inicial y receptor inicial. Estos ultimos
		// datos sirven para que luego javascript muestre el nombre del otro usuario, por ejemplo
		// si hay una conversacion entre pepito y juan
		// a juan le aparece como mensaje de pepito y a pepito como mensaje de juan
		$sql="SELECT count(*) as cantidad_mensajes,id_emisor as id_emisor_inicial,id_receptor as id_receptor_inicial,id_conversacion,concat_ws(' ',u.nombre,u.apellido1) as emisor_inicial,concat_ws(' ',u2.nombre,u2.apellido1) as receptor_inicial,leido,fecha
			FROM mensajes_privados m
			JOIN usuarios u on (m.id_emisor = u.id_usuario)
			JOIN usuarios u2 on (m.id_receptor = u2.id_usuario)
			WHERE id_emisor = ".$usuario->getId()." or id_receptor = ".$usuario->getId()."
			group by id_conversacion
			ORDER BY fecha DESC
			LIMIT ".$_GET["desde"].",".$_GET["cantidad"];
*/
		$sql = "SELECT id_emisor as id_emisor,id_conversacion,concat_ws(' ',u.nombre,u.apellido1) as emisor, (SELECT leido FROM mensajes_privados WHERE id_conversacion=m.id_conversacion and id_receptor = ".$sesion->getUsuario()->getId()." ORDER BY fecha DESC LIMIT 1) as leido,
		(SELECT fecha FROM mensajes_privados WHERE id_conversacion=m.id_conversacion and id_receptor = 1 ORDER BY fecha DESC LIMIT 1) as fecha
		FROM mensajes_privados m
		JOIN usuarios u on (m.id_emisor = u.id_usuario)
		WHERE id_receptor = ".$usuario->getId()."
		GROUP BY id_conversacion
		ORDER BY fecha DESC
		LIMIT ".$_GET["desde"].",".$_GET["cantidad"];
		
		$sql_cantidad_conversaciones = "SELECT count(*) FROM
			(SELECT id_conversacion
		FROM mensajes_privados
		WHERE id_receptor = ".$usuario->getId()."
		GROUP BY id_conversacion) as conversaiones";
		$res=mysql_query($sql_cantidad_conversaciones);
		$fila=mysql_fetch_array($res,MYSQL_NUM);
		$cantidad_conversaciones = $fila[0];
		$carpeta='Bandeja de entrada';
	}
	elseif($_GET['carpeta']=="bandejaSalida")
	{
		//Aqui se hace la pirula y se envia el destinatario como el autor, solo para visualizarlo bien en la seccion bandeja de salida
		$sql = "SELECT id_receptor as id_emisor, concat_ws(' ',nombre,apellido1) as emisor, id_conversacion, fecha, mensaje, n_mensaje as leido
		FROM mensajes_privados m
		JOIN usuarios u on (m.id_receptor = u.id_usuario)
		WHERE id_emisor =".$usuario->getId()."
		ORDER BY fecha DESC
		LIMIT ".$_GET["desde"].",".$_GET["cantidad"];

		$sql_cantidad_conversaciones="SELECT count(*) FROM
		mensajes_privados WHERE id_emisor =".$usuario->getId();
		
		$res=mysql_query($sql_cantidad_conversaciones);
		$fila=mysql_fetch_array($res,MYSQL_NUM);
		$cantidad_conversaciones = $fila[0];
		
		$carpeta='Bandeja de salida';
	}

	$json['idCarpeta'] = $_GET['carpeta'];
	$json['carpeta'] = $carpeta;
	$json['cantidad'] = $cantidad_conversaciones;
	/*
	if($cantidad_conversaciones > 0)
		echo '{"idCarpeta":"'.$_GET[carpeta].'","carpeta":"'.$carpeta.'","cantidad":"'.$cantidad_conversaciones.'"},';
	else
		echo '{"idCarpeta":"'.$_GET[carpeta].'","carpeta":"'.$carpeta.'","cantidad":"0"}';
		*/
	$res=mysql_query($sql);

	while($conversacion = mysql_fetch_array($res,MYSQL_ASSOC))
	{
		
		$idConversacion = $conversacion['id_conversacion'];
	
		$jsonConversacion = array();
		$jsonConversacion['mensajes'] = $conversacion["cantidad_mensajes"];
		$jsonConversacion['id_emisor'] = $conversacion["id_emisor"];          
		$jsonConversacion['emisor'] = $conversacion["emisor"];
		$jsonConversacion['id_conversacion'] = $conversacion["id_conversacion"];
		$jsonConversacion['leido'] = $conversacion["leido"];
		$jsonConversacion['fecha'] = Fecha::formatear($conversacion[fecha]);
		
		$json['mensajes'][] = $jsonConversacion;
		
		//$contenido .= '{"mensajes":"'.$conversacion[cantidad_mensajes].'", "id_emisor":"'.$conversacion[id_emisor].'", "emisor":"'.$conversacion[emisor].'", "id_conversacion":"'.$conversacion[id_conversacion].'", "leido":"'.$conversacion[leido].'", "fecha":"'.Fecha::formatear($conversacion[fecha]).'"},';
		//$sql = "SELECT emisor_id,emisor_nombre,receptor_id,receptor_nombre,mensaje,fecha
		
		// Con este codigo se mostrarian TODOS los mensajes de TODAS las conversaciones, lo descarte por
		// el trafico inutil que generaba
		/*$sql = "SELECT mensaje,fecha
		FROM mensajes_privados
		WHERE id_conversacion = ".$id_conversacion." ORDER BY fecha DESC";
	
		$contenido .='{ "conversacion": {
			"id":"'.$id_conversacion.'",
			"mensajes": {
				"mensaje": [';
		$mensajesRes = mysql_query($sql);
		$mensajePrivado = "";
		while($mensaje = mysql_fetch_array($mensajesRes))
		{
			$mensajePrivado .='{ 
					"contenido":"'.$mensaje[0].'",
					"fecha":"'.$mensaje[1].'"
					},';
		}
		$contenido .= trim($mensajePrivado,",").' ] } }},';*/
	}
	//echo '[';

}elseif(is_numeric($_GET['idConversacion']))
{
	if(is_numeric($_GET['nMensaje']))
	{	
		$sql = "SELECT mensaje FROM mensajes_privados WHERE id_emisor = ".$usuario->getId()." AND id_conversacion = ".$_GET['idConversacion']." and n_mensaje = ".$_GET['nMensaje'];
		$fila = mysql_fetch_array(mysql_query($sql),MYSQL_NUM);
		$json['idConversacion'] = $_GET['idConversacion'];
		$json['nMensaje'] = $_GET['nMensaje'];
		$json['mensaje'] = $fila[0];
		
		//$contenido ='{ "idConversacion":"'.$_GET['idConversacion'].'", "nMensaje":"'.$_GET[nMensaje].'", "mensaje":"'.str_replace("\"","\\\"",$fila[0]).'" }';
	}
	else
	{
		$sql="SELECT id_foto_principal,n_foto_principal,id_conversacion,id_emisor,concat_ws(' ',nombre,apellido1) as emisor,id_receptor,mensaje,fecha FROM mensajes_privados m
		JOIN usuarios u on (u.id_usuario = m.id_emisor)
		WHERE id_conversacion = ".$_GET['idConversacion']." and (id_emisor = ".$usuario->getId()." or id_receptor = ".$usuario->getId().")
		ORDER BY fecha DESC";
		$res = mysql_query($sql);
		$idConversacion=$_GET['idConversacion'];
		
		$json = array();
		while($mensaje = mysql_fetch_array($res,MYSQL_ASSOC))
		{

			$jsonMensaje = array();
			$jsonMensaje['id_emisor'] = $mensaje["id_emisor"];
			$jsonMensaje['emisor'] = $mensaje["emisor"];
			$jsonMensaje['id_receptor'] = $mensaje["id_receptor"];
			$jsonMensaje['mensaje'] = $mensaje['mensaje'];
			$jsonMensaje['fecha'] = Fecha::formatear($mensaje[fecha]);
			$jsonMensaje['idFoto'] = $mensaje["id_foto_principal"];
			$jsonMensaje['nFoto'] = $mensaje["n_foto_principal"];
			$json[] = $jsonMensaje;

			//$mensajeStr = str_replace("\"","\\\"",$mensaje['mensaje']);
			//$contenido .= '{"id_emisor":"'.$mensaje[id_emisor].'", "emisor":"'.$mensaje[emisor].'", "id_receptor":"'.$mensaje[id_receptor].'","mensaje":"'.$mensajeStr.'" ,"fecha":"'.Fecha::formatear($mensaje[fecha]).'"},';
		}
		//$contenido ='{ "idConversacion":"'.$idConversacion.'" },'.$contenido; 
		
		//Dejamos el mensaje como leido para este usuario, borrando de la tabla mensajes_privados_nuevos. Un trigger luego se encarga de actulizar
		$sqlLeer = "DELETE FROM mensajes_privados_nuevos WHERE id_conversacion = ".$idConversacion." AND id_receptor = ".$usuario->getId();
		//echo $sqlLeer;
		mysql_query($sqlLeer);
	}
	
}elseif(strlen($_POST['contenido']) > 0)
{

	//Comprobamos ambos son miembros de la conversacion
	if(is_numeric($_GET['enviarMensaje']))
	{
		$sql = "SELECT COUNT(*) FROM mensajes_privados WHERE (id_emisor = ".$usuario->getId()." OR id_receptor = ".$usuario->getId().") AND id_conversacion = ".$_GET['enviarMensaje'];
		$res = mysql_query($sql);
		$fila = mysql_fetch_array($res,MYSQL_NUM);
		if($fila[0] > 0)
		{
			$idConversacion = $_GET['enviarMensaje'];
			//obtenemos el id del otro miembro de la conversacion
			$sql = "select id_emisor,id_receptor from mensajes_privados where id_conversacion = ".$idConversacion." and (id_emisor != ".$usuario->getId()." or id_receptor != ".$usuario->getId().") LIMIT 1";
			$res = mysql_query($sql);
			$fila = mysql_fetch_array($res,MYSQL_NUM);
			if($fila[0] == $usuario->getId())
				$receptor = $fila[1];
			else
				$receptor = $fila[0];
		}


	}else{
		$idConversacion = "null";
		$receptor=$_GET['receptor'];
	}
	
	if(is_numeric($receptor))
	{
		$sql="call enviar_mensaje_privado (".$usuario->getId().", ".$receptor." ,".$idConversacion.",'".$_POST['contenido']."')";
		//echo $sql;
		if(mysql_query($sql))
		{
			if(is_numeric($idConversacion))
				//echo '{"id":"'.$idConversacion.'"}';
				$json['id'] = $idConversacion;
			else
				//echo '{"enviado":"ok"}';
				$json['enviado'] = "ok";
		}else $json['error'] = "Error al enviar mensaje"; //echo '{"error":"Error al enviar mensaje"}';
	}else $json['error'] = "No hay receptor"; //echo '{"error":"No hay receptor"}';
}
	echo json_encode($json);
	//echo trim($contenido,",");
	//echo ']';
?>
